In the latter half of the twentieth century, there began a phenomenon known as the information revolution. While the information revolution is a historical development broader in scope than any one event or machine, no single device has come to represent the information revolution more than the digital electronic computer. The development of computer systems has surely been a revolution. Each year, computer systems grow faster, store more data, and provide more applications to their users. At the same time, the cost of computing resources has consistently declined, so that information which was too expensive to gather, store and process a few years ago, is now economically feasible to manipulate via computer. The reduced cost of information processing drives increasing productivity in a snowballing effect, because product designs, manufacturing processes, resource scheduling, administrative chores, and many other factors, are made more efficient.
The reduced cost of computing and the general availability of digital devices has brought an explosion in the volume of information stored in such devices. With so much information stored in digital form, it is naturally desirable to obtain wide access to the information from computer systems. The volume of information dwarfs the storage capability of any one device. To improve information access, various techniques for allowing computing devices to communicate and exchange information with one another have been developed. Perhaps the most outstanding example of this distributed computing is the World Wide Web (often known simply as the “web”), a collection of resources which are made available throughout the world using the Internet. People from schoolchildren to the elderly are learning to use the web, and finding an almost endless variety of information from the convenience of their homes or places of work. Businesses, government, organizations and even ordinary individuals are making information available on the web, to the degree that it is now the expectation that anything worth knowing about is available somewhere on the web.
The Internet, which provides the support for the web as well as for e-mail and other forms of communication and distributed processing among multiple digital systems, is a heterogeneous network of digital devices (nodes) connected by multiple links, so that between any two nodes of the network there are typically multiple paths, giving the Internet some degree of redundancy. Data is sent in packets, each packet being routed across multiple successive nodes until it reaches its destination.
At the basic level of routing packets, the Internet is capable of transferring any arbitrary data from one node to another, and may thus be viewed as a communications medium. However, the usefulness of the Internet depends on the applications which handle data exchanges at the source and destination nodes. The advent of web browsers and other web applications has thus greatly expanded the use of the Internet, by making the basic information transfer technology available for use on an individual, interactive basis to people without extensive computer programming skills.
It should therefore be recognized that enhancements to the usability of Internet technology have been critical to the Internet's widespread acceptance, and that we may expect this to be true of continued use and expansion of the Internet and related technologies for solving problems in the future.
The World Wide Web employs an interactive client-server paradigm. In response to user input, an interactive browser application executing on a client submits a request to a server using a pre-defined protocol. The server responds in real time, and the browser formats the response for display to the user. At the most basic level of interaction, the user simply requests a document (such as a web page) by sending a URL of the desired document, and the server responds by sending a copy of the requested document. In some cases, a more complex data interchange may be desired. For example, a user may provide search parameters to a search engine, order and billing information to an on-line shopping server, and so forth.
One mechanism for supporting more complex data interchange in a web transaction is the use of HTML forms. An HTML form specifies the type of input to be provided from a client to a web server application. Typically, the browser downloads an HTML form from the web server. User data is gathered by the browser and is formatted according to the HTML form. This data (“form data”) is then sent to the server as part of an HTTP request. The server then processes the request including the form data, and responds to the client appropriately. The user data may be the result of user interactive input, but an HTML form can also be used to transmit data from a file selected by the user and arrange this data in the format specified by the HTML form. Although form data is often a simple string, it may comprise multiple parts (“multi-part form data”) and come from multiple sources such as combinations of files, interactive or other input. An HTML form thus enables a user to communicate complex data to a web server in a server-specified format.
As useful as this mechanism is, it has generally been limited by the environment for which it was created, i.e., the paradigm of an interactive browser. It is designed for use in isolated, real-time transactions, where the amount of user input required is fairly limited. Although not necessarily recognized, the underlying mechanisms might be extended for use in other contexts, specifically in contexts involving non-interactive, or programmatic exchange of data, in which the volume of data exchanged might be much greater, in which it is undesirable to burden the user with a lengthy interactive selection session and/or in which the data is not exchanged in real time. Current browser tools based on the interactive paradigm make use of HTML forms in such other contexts difficult, impossible or inconvenient.